/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"83B3B2FB-1E82-4401-9AAD-4AECED169C05"}
 * @AllowToRunInFind
 */
function continuar(event) 
{	
	elements.errores.removeAllTabs()
	var res = globals.chequeaVariables()
	if (res[0] == 1)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Error en variables globales : '+res[1],'OK')
		return
	}
	
	var $tipo_asiento = 7
	if (globals.control_asientos_prov($tipo_asiento,globals.gMesAsientos,globals.gAnioAsientos) == 0 )
	{
		return
	}
	// DEFINE FOUNDSETs
	/** @type {JSFoundSet<db:/contable/asiento_prov_cab>}*/
	var $provisorio = databaseManager.getFoundSet('contable','asiento_prov_cab')
	/** @type {JSFoundSet<db:/infocom/movim_cyb>}*/
	var $movim		= databaseManager.getFoundSet('infocom','movim_cyb')
	/** @type {JSFoundSet<db:/infocom/movim_cyb>}*/
	var $movim_extrac = databaseManager.getFoundSet('infocom','movim_cyb')
	var $cols		= ['fecha','documento','error']
	var $errores 	= databaseManager.createEmptyDataSet( 0,  $cols	)
	
	// BUSCAR en MOVIM_CYB mov. de CAJA
	if($movim.find() == false)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Ocurrió un error al buscar movimientos','OK')
		return
	}
	var error
	var $fecha_desde 	= new Date(globals.gAnioAsientos, globals.gMesAsientos-1,1,0,0,0,0)
	var $fecha_hasta 	= new Date(globals.gAnioAsientos, globals.gMesAsientos,0,23,59,59,996)
	var rango 			= utils.dateFormat($fecha_desde,'dd-MM-yyyy') + '...'+ utils.dateFormat($fecha_hasta,'dd-MM-yyyy')
	$movim.fecha_movim 		= '#' + rango + '|dd-MM-yyyy'
	$movim.cuentas_cyb_id 	= 1  //  caja
	$movim.cod_movim 		= globals.zconf_cyb_cod_movim_ingreso        
	$movim.imputacion_id 	= globals.zconf_cyb_imputacion_extraccion  
	var found = $movim.search()
	if (found == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No se encontraron movimientos de caja y bancos con esas condiciones','OK')
		return
	}
	databaseManager.setAutoSave(false)
	// POR cada MOVIM_CYB   buscar en MOVIM_CYB mov. de EXTRACCION (SOLO 1)
	var $cant = databaseManager.getFoundSetCount($movim)
	for (var i = 1 ; i <= $cant ; i++)
	{
		var $rcd = $movim.getRecord(i)
		
		// BUSCAR en MOVIM extraccion correspondiente a MOVIM de caja
		if($movim_extrac.find() == false)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Ocurrió un error al buscar movimientos de extracción','OK')
			return
		}
		$movim_extrac.cod_movim		= globals.zconf_cyb_cod_movim_egreso
		$movim_extrac.imputacion_id	= globals.zconf_cyb_imputacion_extraccion 
		$movim_extrac.fecha_movim	= $rcd.fecha_movim
		$movim_extrac.importe		= $rcd.importe
		$movim_extrac.referencia	= $rcd.referencia
		$movim_extrac.concepto		= $rcd.concepto
		found = $movim_extrac.search()
	// ENCONTRAR solo UNO en movim_extrac, informar error
		if (found == 0)
		{
			error = new Array(utils.dateFormat($rcd.fecha_movim,'dd-MM-yyyy'), 'Extraccion de $'+$rcd.importe+' Ref:'+$rcd.referencia + ' Concep: ' + $rcd.concepto, ' No existe con esas condiciones')
			$errores.addRow(error)
		}
		if (found > 1)
		{
			error = new Array(utils.dateFormat($rcd.fecha_movim,'dd-MM-yyyy'), 'Extraccion de $'+$rcd.importe+' Ref:'+$rcd.referencia + ' Concep: ' + $rcd.concepto, ' Hay ' + found + ' extracciones')
			$errores.addRow(error)
		}
		var $rcd_e = $movim_extrac.getRecord(1)
	
		//  GRABA  ASIENTO PROVISORIO					
		tipoAsiento_7($rcd , $rcd_e , $provisorio , $errores, $tipo_asiento)		
		
	} // fin for de MOVIM
	if ($errores.getMaxRowIndex() > 0)
	{
		var $fecha_hoy	= utils.dateFormat(new Date(),'dd-MM-yyyy')
		var $periodo	= 'Desde ' + utils.dateFormat($fecha_desde,'dd-MM-yyyy') + ' hasta '  + utils.dateFormat($fecha_hasta,'dd-MM-yyyy')
		var $titulo		= 'Asiento Extracciones - ' + $periodo + ' - Fecha Proceso ' + $fecha_hoy
		globals.crearFormErrores('asiento_extraccion_7',$errores,$cols,$titulo)	
	}

	databaseManager.startTransaction()
	if (databaseManager.saveData()) 
	{
		databaseManager.setAutoSave(true)
		databaseManager.commitTransaction()
	}
	else
	{
		databaseManager.rollbackTransaction()
		globals.DIALOGS.showWarningDialog('Aviso','Ocurrió un error al intentar grabar los cambios. El proceso está incompleto','OK')
	}
}

/**
 * @param {JSRecord<db:/infocom/movim_cyb>} $rcd
 * @param {JSRecord<db:/infocom/movim_cyb>} $rcd_e
 * @param {JSFoundSet<db:/contable/asiento_prov_cab>} $provisorio
 * @param {JSDataSet} $errores
 * @param {Number} $tipo_asiento
 * 
 * @properties={typeid:24,uuid:"070D505B-918B-4AF4-8480-327987B0358C"}
 */
function tipoAsiento_7($rcd , $rcd_e , $provisorio , $errores, $tipo_asiento) 
{
//  HABER = DEBE 
	 var error
	if($rcd.importe!= $rcd_e.importe)
	{
		error = new Array(utils.dateFormat($rcd.fecha_movim,'dd-MM-yyyy'),'Extraccion de $'+$rcd.importe+'  Ref:'+$rcd.referencia + '  Concep: ' + $rcd.concepto, ' Debe distinto a haber')		
		$errores.addRow(error)
	} // igual se hace asiento
	
	// CABECERA ASIENTO
	$provisorio.newRecord()

	$provisorio.moneda 				= 'P'
	$provisorio.moneda_carga 		= 1
	$provisorio.hizo 				= globals.gUsuarioID
	$provisorio.tipo_actualizacion 	= globals.z_conf_asiento_normal
	$provisorio.empresa				= globals.gUservID 
	$provisorio.fecha 				= $rcd.fecha_movim
	$provisorio.texto 				= $rcd_e.concepto   
	$provisorio.subdiario_id 		= 4 // egresos
	$provisorio.mes					= $rcd.fecha_movim.getMonth()+1
	$provisorio.anio				= $rcd.fecha_movim.getFullYear()
	$provisorio.tipo_asiento_id 	= $tipo_asiento
	$provisorio.total				= $rcd.importe

	// DETALLE ASIENTO
	var det = $provisorio.asiento_prov_cab_to_asiento_prov_copia
	// ALTA CAJA  (es DEBE)
		det.newRecord()
		
		det.columna 	= 'D'
		det.cuentas_id = 999999
		if ($rcd.movim_cyb_to_cuentas_cyb_copia.getSize()>0) 
		{
			if ($rcd.movim_cyb_to_cuentas_cyb_copia.plancta_id!=null)
				det.cuentas_id 	= $rcd.movim_cyb_to_cuentas_cyb_copia.plancta_id
			else
			{
				error = new Array(utils.dateFormat($rcd.fecha_movim,'dd-MM-yyyy'), 'Extraccion de $'+$rcd.importe+'  Ref:'+$rcd.referencia + '  Concep: ' + $rcd.concepto, ' Cuenta no cargada en tabla cuentas_cyb')
				$errores.addRow(error) 
			}
		}
		else
		{// NO EXISTE relacion movim_cyb to cuentas_cyb
			error = new Array(utils.dateFormat($rcd.fecha_movim,'dd-MM-yyyy'), 'Extraccion de $'+$rcd.importe+'  Ref:'+$rcd.referencia + '  Concep: ' + $rcd.concepto, ' No existe cuenta asociada en tabla cuentas_cyb')
			$errores.addRow(error)
		}
		det.importe 	= $rcd.importe
		det.numero		= 0
		det.empresa		= globals.gUservID
		det.centro		= 1
		det.division	= 1
		det.leyenda		= 'Caja'  
		det.mes			= $rcd.fecha_movim.getMonth()+1
		det.anio		= $rcd.fecha_movim.getFullYear()  

	
	// ALTA BANCO  (es HABER)
		det.newRecord() 
		
		det.columna = 'H'
		det.cuentas_id = 999999
		if ($rcd_e.movim_cyb_to_cuentas_cyb_copia.getSize()>0)  
		{
			if ($rcd_e.movim_cyb_to_cuentas_cyb_copia.plancta_id==null)
			{
				error = new Array(utils.dateFormat($rcd_e.fecha_movim,'dd-MM-yyyy'), 'Extraccion de $'+$rcd_e.importe+'  Ref:'+$rcd_e.referencia + '  Concep: ' + $rcd_e.concepto, ' Cuenta contable no cargada en tabla cuentas_cyb para codigo=' + $rcd_e.cuentas_cyb_id)
				$errores.addRow(error) 
			} 	
			else
			{
				det.cuentas_id 	= $rcd_e.movim_cyb_to_cuentas_cyb_copia.plancta_id;
				det.leyenda		= $rcd_e.movim_cyb_to_cuentas_cyb_copia.descripcion
			}
		}
		else
		{
			error = new Array(utils.dateFormat($rcd_e.fecha_movim,'dd-MM-yyyy'), 'Extraccion de $'+$rcd_e.importe+'  Ref:'+$rcd_e.referencia + '  Concep: ' + $rcd_e.concepto, ' No existe cuenta asociada en cuentas_cyb para codigo=' + $rcd_e.cuentas_cyb_id)
			$errores.addRow(error)
		}
		det.importe 	= $rcd_e.importe
		det.numero		= 0
		det.empresa		= globals.gUservID
		det.centro		= 1
		det.division	= 1
		det.mes			= $rcd_e.fecha_movim.getMonth()+1
		det.anio		= $rcd_e.fecha_movim.getFullYear()
}
